package models

import (
	"gorm.io/gorm"
	"time"
)

// UserSysRoles 用户角色关联表结构体
type UserSysRoles struct {
	ID        uint64    `gorm:"column:id;primary_key;auto_increment" json:"id" form:"id"`
	UserID    uint64    `gorm:"column:user_id;type:bigint(20);not_null" json:"user_id" form:"user_id"`
	RoleID    uint64    `gorm:"column:sys_role_id;type:bigint(20);not_null" json:"role_id" form:"role_id"`
	CreatedAt time.Time `gorm:"column:created_at;default:CURRENT_TIMESTAMP" json:"created_at" form:"created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at;default:CURRENT_TIMESTAMP;update_default:CURRENT_TIMESTAMP" json:"updated_at" form:"updated_at"`
}

// TableName 指定结构体对应的数据库表名
func (UserSysRoles) TableName() string {
	return "user_sys_roles"
}

// GetUserSysRolesByUserID
//
// 描述信息：根据用户ID获取用户的系统角色
//
// Param：
//
//	db ：mysql链接
//	userID ：用户ID
//
// Return：
//
//	userSysRole ：查询到的用户系统角色信息
//	error ：错误信息
func GetUserSysRolesByUserID(db *gorm.DB, userID uint64) (UserSysRoles, error) {
	var userSysRoles UserSysRoles
	result := db.Model(&UserSysRoles{}).Where("user_id = ?", userID).Find(&userSysRoles)
	if result.Error != nil {
		return userSysRoles, result.Error
	}
	return userSysRoles, nil
}
